iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

要聊專案維護性,就不得不提一下 DevOps 的觀念了,雖然身為前端工程師的我們通常不會是公司 DevOps 的主導人,但這不代表我們沒有相對應的責任。

先來看一下維基百科上面對 DevOps 的定義吧:

DevOps(Development和Operations的組合詞)是一種重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例。通過自動化「軟體交付」和「架構變更」的流程,來使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。

可以把 DevOps 看作開發(軟體工程)、技術運營和品質保障(QA)三者的交集。

由 Devops.png: Rajiv.Pantderivative work: Wylve - 本檔案衍生自: Devops.png:, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=20202905
由 Devops.png: Rajiv.Pantderivative work: Wylve - 本檔案衍生自: Devops.png:, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=20202905

by: 維基百科 DevOps

在 DevOps「開發」、「測試」、「維運」的三個要素中,我們身為 Developer 當然開發就會是我們比重最大的面向,不過測試與維運的參與其實也有其必要性。

先從測試開始說起,不論團隊的組成中是否有 QA 的這個角色,專案中的對程式碼的測試都是不能忽略的環節,而測試涵蓋的範圍不只包含了前面提到的 ESLint、TypeScript 的靜態檢查,還有後面會延伸說明的 Unit test、E2E test 等等。

而維運的部分應該就容易理解多了,我們前端不一定需要熟悉所有的服務架構,但最少總要讓辛苦完成的專案成功部署吧?設定好部署所需的設定、腳本、環境變數、錯誤攔截機制 (出 Bug 的時候能快速確定要摸摸自己的鼻子還是甩鍋) ,讓專案能好好的在線上運行就是我們的任務了。

CI/CD 就是幫助我們把這些事情自動化的工具。

什麼是 CI/CD

CI/CD stands for Continuous Integration (CI) and Continuous Deployment or Continuous Delivery (CD).
CI/CD 通常指的是持續集成和持續交付或持續部署的組合實踐。

光看這段引用是不是有點黑人問號呢?

其實簡單來說,就是將程式發布的流程自動化,自動編譯、測試、部署......等等,把重複性操作轉為自動化執行。

如果對 CI/CD 這個議題有興趣,我推薦可以去看一本小說,叫做:「鳳凰專案:看IT部門如何讓公司從谷底翻身的傳奇故事」。
看完本書就知道什麼是 CI/CD 了,今天就介紹到這邊,我們下次見。

這本小說非常好看易讀,但書中的案例卻都是在真實環境中很常見的各種災難,閱讀此書不會讓你馬上就知道如何建構屬於你的 CI/CD 模式,但可以讓你知道 CI/CD 的重要性與大致上的概念。

持續整合 CI - Continuous integration

上面提到的自動編譯、測試、部署,其中自動編譯與測試的部分就是包含在 CI 階段進行的,通常會提供一個統一、一次性的編譯與測試環境,透過預先設定好的容器與預先寫好的腳本來進行 CI 的流程。

CI 可以將人工操作的比例盡可能的降低,畢竟人工操作不但累人,可靠性上面還掛有一個大大的問號。

而統一環境也是非常重要的環節,因為透過統一的編譯與測試環境,才能有效避免 Dev 環境與 Production 環境之間的落差造成不可預期的 BUG。

持續佈署 CD - Continuous Deployment

而 CD 的概念就相對單純一些了,在每次 CI 完成編譯、測試的流程後自動將最新的程式版本部署到伺服器上提供服務,這就是 CD 的概念。

而 CD 的架構通常也包含了服務可靠性的確保,在部署失敗或是服務異常等等的狀況發生時,系統會利用各種方式來通知維運人員進行處理,維運人員也可以在最短的時間內採取必要的行動,像是遇到重大 BUG 時可以快速回退到之前的穩定版本,避免損害擴大。


上一篇
ESLint - 程式碼除臭劑
下一篇
好用的 CI 工具 - GitHub Actions 快速入門
系列文
前端開發維護筆記 - 打造健康的前端專案27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言